package com.sdc.servlets;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;

import com.sdc.bean.ItemSacolaBean;
import com.sdc.bean.ProdutoBean;
import com.sdc.bean.UsuarioBean;
import com.sdc.control.ControleProdutos;

/**
 * Servlet implementation class Sacola
 */
public class SacolaServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static final Logger log = Logger.getLogger(SacolaServlet.class);

	protected void service(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession();
		java.util.List<ItemSacolaBean> sacola = null;
		sacola = (java.util.List<ItemSacolaBean>) session
				.getAttribute("sacola");
		double total = 0;

		if (sacola == null) {
			sacola = new ArrayList<ItemSacolaBean>();
		}
		String action = "";
		action = request.getParameter("action");

		log.info("action :" + action);
		if (action != null) {
			if (action.equalsIgnoreCase("add")) {
				if (session.getAttribute("qtde_items") == null) {
					session.setAttribute("qtde_items", 1);
				} else {
					int qtde_items = Integer.parseInt(session.getAttribute(
							"qtde_items").toString());
					qtde_items++;
					session.setAttribute("qtde_items", qtde_items);
				}

				int id_produto = Integer.parseInt(request
						.getParameter("id_produto"));
				for (int i = 0; i < sacola.size(); i++) {
					ItemSacolaBean icb = sacola.get(i);

					if (icb.getId_produto() == id_produto) {
						icb.setQuantidade(icb.getQuantidade() + 1);

						for (int j = 0; j < sacola.size(); j++) {
							total += sacola.get(j).getTotal_item();
						}
						session.setAttribute("total_sacola", total);

//						response.sendRedirect("jsp/sistema/compras/sacola.jsp");
						response.sendRedirect(request.getContextPath()+"/ProdutosServlet");

						return;
					}

				}

				ControleProdutos cp = new ControleProdutos();
				ProdutoBean pb = cp.obterProduto(id_produto);
				if (pb != null) {
					log.debug("produto encontrado");
					ItemSacolaBean icb = new ItemSacolaBean();
					icb.setDescricao(pb.getDescricao());
					icb.setComplemento(pb.getComplemento());
					icb.setId_produto(pb.getId_produto());
					icb.setQuantidade(1);
					icb.setPreco(pb.getPreco_unitario());

					sacola.add(icb);
				}

				for (int i = 0; i < sacola.size(); i++) {
					total += sacola.get(i).getTotal_item();
				}
				session.setAttribute("total_sacola", total);
				session.setAttribute("sacola", sacola);
				log.debug("Sacola adicionada a seção");
				log.debug(session.getAttribute("sacola"));

//				response.sendRedirect("jsp/sistema/compras/sacola.jsp");
				response.sendRedirect(request.getContextPath()+"/ProdutosServlet");

			}

			if (action.equalsIgnoreCase("esvaziar")) {

				sacola.clear();
				session.setAttribute("qtde_items", 0);
				response.sendRedirect("jsp/sistema/compras/sacola.jsp");

			}

			if (action.equalsIgnoreCase("atualizar_item")) {

				int id_produto = Integer.parseInt(request
						.getParameter("id_produto"));

				int qntde = Integer.parseInt(request.getParameter("qntde"));

				for (int i = 0; i < sacola.size(); i++) {
					ItemSacolaBean icb = sacola.get(i);

					if (icb.getId_produto() == id_produto) {
						icb.setQuantidade(qntde);
					}

				}
				int qtde_items = 0;
				for (int i = 0; i < sacola.size(); i++) {
					ItemSacolaBean icb = sacola.get(i);
					qtde_items += icb.getQuantidade();
				}
				session.setAttribute("qtde_items", qtde_items);

				total = 0;
				for (int j = 0; j < sacola.size(); j++) {
					total += sacola.get(j).getTotal_item();
				}
				session.setAttribute("total_sacola", total);

				response.sendRedirect("jsp/sistema/compras/sacola.jsp");

			}

			if (action.equalsIgnoreCase("rem")) {
				int id_produto = Integer.parseInt(request
						.getParameter("id_produto"));

				for (int i = 0; i < sacola.size(); i++) {
					ItemSacolaBean icb = sacola.get(i);

					if (icb.getId_produto() == id_produto) {
						sacola.remove(i);
					}

				}
				total = 0;
				for (int j = 0; j < sacola.size(); j++) {
					total += sacola.get(j).getTotal_item();
				}
				int qtde_items = 0;
				for (int i = 0; i < sacola.size(); i++) {
					ItemSacolaBean icb = sacola.get(i);
					qtde_items += icb.getQuantidade();
				}
				session.setAttribute("qtde_items", qtde_items);
				session.setAttribute("total_sacola", total);

				response.sendRedirect(request.getContextPath()+"/ProdutosServlet");

			}

			if (action.equalsIgnoreCase("finalizar_compra")) {
				if (session.getAttribute("usuario") != null) {

					UsuarioBean u = (UsuarioBean) session
							.getAttribute("usuario");
					if (u.isLogado()) {
						response
								.sendRedirect("jsp/sistema/compras/formas_pagamento.jsp");
					} else {
						session.setAttribute("passo", "finalizar_compra");
						response
								.sendRedirect("jsp/sistema/compras/identificacao.jsp");
					}
				} else {
					session.setAttribute("passo", "finalizar_compra");
					response
							.sendRedirect("jsp/sistema/compras/identificacao.jsp");
				}
			}
			if (action.equalsIgnoreCase("faturar")) {

				response.sendRedirect("jsp/sistema/compras/fatura_cartao.jsp");

			}
			if (action.equalsIgnoreCase("encerrar")) {

				response.sendRedirect("jsp/sistema/compras/compra_sucesso.jsp");

			}

		} else {
			response.sendRedirect("index.jsp");

		}
	}

}
